1. Field of the Invention
This invention relates to improvements in end-to-end communication between a client and a server. More particularly, this invention relates to apparatus and methods for minimizing the resources used by a resource-constrained client, when accessing services provided by a server.
2. Description of the Related Art
The meanings of acronyms and certain terminology used herein are given in Table 1. The terms Sun, Sun Microsystems, the Sun logo, Java, J2EE, J2ME, and J2SE are trademarks or registered trademarks of Sun Microsystems, Inc., in the United States of America and other countries. All other company and product names may be trademarks of their respective companies.
TABLE 1APIApplication Programming InterfaceHTTPHypertext transfer protocolJ2EEJava 2 Enterprise EditionJ2MEJava 2 Micro EditionJ2SEJava 2 Standard EditionMIDPMobile information device profileSOAPSimple Object Access ProtocolWSDLWeb Service Description LanguageXMLExtended Markup Language
When developing end-to-end applications for thin clients, such as mobile information devices, it is important that the client code for communicating with a server be as compact and efficient as possible, and that traffic between the client and server be minimized when requesting services or resources of the server. This is desirable, because the client's resources are generally limited. Some clients have small memory capacity and limited graphics capabilities. Other clients may need to minimize computation in order to avoid depleting battery power, or to improve the responsiveness of an application. Furthermore, in the current state of the art, network bandwidth limitations and latency can severely limit the utility of thin clients.
J2EE and J2ME are widely used platform-independent technologies, which are used respectively for multi-tier enterprise applications and low-end clients, such as mobile information devices, smart cards, and mobile telephones. The two technologies are not well integrated, and it is not convenient or practical for a J2ME client to directly access J2EE services on a server. Known solutions designed for J2SE/J2EE integration do not scale down to the low processing power and network bandwidth of J2ME devices. As a result, developers are often compelled to spend a great deal of engineering effort developing and debugging protocols for wireless communication.
One widely used protocol for accessing remote services is SOAP, which specifies how to encode and transmit method invocations and responses using HTTP and XML. SOAP is commonly used in conjunction with WSDL, a language for declaring web services. J2ME clients are currently able to access web services using SOAP in several ways.
An extensible open-source API, kSOAP, available from Enhydra.org, is usable by a MIDP application for accessing a subset of SOAP services. This is a solution for MIDlets that need to communicate directly with the server, or require flexibility. However, its memory footprint of 34 Kbytes is currently too large for most MIDP devices.
Another API, kXML-RPC, is an open-source J2ME implementation of the protocol XML-RPC, available from Enhydra.org. This API is used for cross-platform remote procedure calls. XML-RPC is similar to SOAP, but is a more concise protocol. Less network bandwidth and processing power are required to transport and parse messages. XML-RPC is less generic, and less widely supported than SOAP.
A distributed objects framework, YoCOA, is available from Yospace, 7, The Courtyard High Street, Staines, Middlesex, TW18 4DR, UK. YoCOA is a proprietary set of J2ME and J2EE tools and libraries for facilitating end-to-end development. YoCOA provides remote procedure calls to appropriately enabled J2EE services.
The software product Macrospace Connect, available from Macrospace Ltd., 64 Knightsbridge, London, SW1X 7JF, UK, is another proprietary set of tools and libraries for facilitating end-to-end development.
Merely customizing a development tool to work optimally with SOAP and WSDL is not a good general solution for end-to-end communication, as there are many existing server configurations in which the services provided are neither expressed in WSDL nor accessed by SOAP.
Conventionally, optimization of the client code is accomplished by manual code adjustment. This technique is cumbersome and labor intensive. Many different optimizations may be required for use with different mobile information devices. Reliance on manual optimization can compel an application developer to dedicate expensive staff to the task of accommodating new models and types of mobile information device. Thus, improving manual optimization techniques would seem to be an unpromising approach.
It is known to restrict access to software by a client by various code obfuscation techniques in order to prevent reverse-engineering of software, when using languages such as Java, which was designed to be compiled into a platform independent bytecode format. However, these techniques are of limited utility in minimizing an application's code size.